package com.itheima.controller;

import freemarker.template.Configuration;
import freemarker.template.Template;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Map;

@RestController
public class FreeMarkerController {

    @Autowired
    private Configuration freemarkerConfig;


    @PostMapping("/add")
    public String addPackage() {
        // 1. 新增套餐并关联检查组
        // 2. 保存图片到Redis

        // 3. 生成套餐列表静态页面
        generateSetmealListPage();

        // 4. 生成套餐详情静态页面
        generateSetmealDetailPage();

        return "套餐新增成功";
    }

    /**
     * 生成套餐列表静态页面
     * 该方法会使用FreeMarker模板引擎生成一个包含所有套餐的静态HTML页面。
     * 生成的页面路径为指定目录下的`mobile_setmeal.html`。
     */
    private void generateSetmealListPage() {
        try {
            // 获取FreeMarker模板对象，指定要加载的模板文件名为"mobile_setmeal.ftl"
            Template template = freemarkerConfig.getTemplate("mobile_setmeal.ftl");

            // 创建一个数据模型，用于传递给模板引擎渲染
            Map<String, Object> dataModel = new HashMap<>();
            dataModel.put("setmeal", "需要传递的数据");

            // 创建FileWriter对象，用于将生成的静态HTML内容写入指定的文件路径
            FileWriter writer = new FileWriter("/static_pages/mobile_setmeal.html");

            // 使用FreeMarker模板引擎处理模板，将数据模型中的内容渲染到模板中
            // 然后将渲染后的内容写入到指定的文件
            template.process(dataModel, writer);

            // 关闭FileWriter，确保所有内容都已正确写入文件
            writer.close();
        } catch (Exception e) {
            // 捕获并打印异常，以防止方法中断并提供调试信息
            e.printStackTrace();
        }
    }

    /**
     * 生成指定套餐的详情静态页面
     * 该方法会使用FreeMarker模板引擎生成一个指定套餐的详情静态HTML页面。
     * 生成的页面路径为指定目录下的`html`。
     */
    private void generateSetmealDetailPage() {
        try {
            // 获取FreeMarker模板对象，指定要加载的模板文件名为"mobile_setmeal_detail.ftl"
            Template template = freemarkerConfig.getTemplate("mobile_setmeal_detail.ftl");

            // 创建一个数据模型，用于传递给模板引擎渲染
            Map<String, Object> dataModel = new HashMap<>();
            dataModel.put("setmeal_detail", "需要传递的数据");

            // 创建FileWriter对象，用于将生成的静态HTML内容写入指定的文件路径
            // 文件名根据套餐ID动态生成，如 "package_detail_1.html"
            FileWriter writer = new FileWriter("/static_pages/mobile_setmeal_detail.html");

            // 使用FreeMarker模板引擎处理模板，将数据模型中的内容渲染到模板中
            // 然后将渲染后的内容写入到指定的文件
            template.process(dataModel, writer);

            // 关闭FileWriter，确保所有内容都已正确写入文件
            writer.close();
        } catch (Exception e) {
            // 捕获并打印异常，以防止方法中断并提供调试信息
            e.printStackTrace();
        }
    }


}
